package com.tosee.model.dbTosee;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 * Classe représentant un episode
 * 
 * @author robint
 */
@Entity
@Table(name = "T_EPISODE_EPE")
public class Episode {

    /**
     * Identifiant.
     */
    @Id
    @Column(name = "EPE_ID", nullable = false, unique = true)
    @GeneratedValue
    private int id;

    /**
     * titre
     */
    @Column(name = "EPE_TITRE", nullable = true, unique = false)
    private String titre;

    /**
     * titreVO
     */
    @Column(name = "EPE_TITRE_VO", nullable = true, unique = false)
    private String titreVo;

    /**
     * auteur
     */
    @Column(name = "EPE_AUTEUR", nullable = true, unique = false)
    private String auteur;

    /**
     * idAllocine
     */
    @Column(name = "EPE_ID_ALLOCINE", nullable = false, unique = true)
    private Integer codeAllocine;

    /**
     * dateUpdate
     */
    @Column(name = "EPE_DATE_DIFFUSION", nullable = true, unique = false)
    private Date dateDiffusion;

    /**
     * serie
     */
    @ManyToOne
    @JoinColumn(name = "SRE_ID")
    private Serie serie;

    /**
     * saison
     */
    @ManyToOne
    @JoinColumn(name = "SSN_ID")
    private Saison saison;

    /***
     * Constructeur par défaut.
     */
    public Episode() {
        super();
    }

    /**
     * Constructeur.
     * 
     * @param _id id
     */
    public Episode(int _id) {
        super();
        this.id = _id;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + (int) (id ^ (id >>> 32));
        return result;
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean equals(Object obj) {
        if(this == obj) {
            return true;
        }
        if(obj == null) {
            return false;
        }
        if(getClass() != obj.getClass()) {
            return false;
        }
        Episode other = (Episode) obj;
        if(codeAllocine == other.getCodeAllocine()) {
            return true;
        }
        return true;
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the titre
     */
    public String getTitre() {
        return titre;
    }

    /**
     * @param titre the titre to set
     */
    public void setTitre(String titre) {
        this.titre = titre;
    }

    /**
     * @return the titreVo
     */
    public String getTitreVo() {
        return titreVo;
    }

    /**
     * @param titreVo the titreVo to set
     */
    public void setTitreVo(String titreVo) {
        this.titreVo = titreVo;
    }

    /**
     * @return the auteur
     */
    public String getAuteur() {
        return auteur;
    }

    /**
     * @param auteur the auteur to set
     */
    public void setAuteur(String auteur) {
        this.auteur = auteur;
    }

    /**
     * @return the codeAllocine
     */
    public Integer getCodeAllocine() {
        return codeAllocine;
    }

    /**
     * @param codeAllocine the codeAllocine to set
     */
    public void setCodeAllocine(Integer codeAllocine) {
        this.codeAllocine = codeAllocine;
    }

    /**
     * @return the dateDiffusion
     */
    public Date getDateDiffusion() {
        return dateDiffusion;
    }

    /**
     * @param dateDiffusion the dateDiffusion to set
     */
    public void setDateDiffusion(Date dateDiffusion) {
        this.dateDiffusion = dateDiffusion;
    }

    /**
     * @return the serie
     */
    public Serie getSerie() {
        return serie;
    }

    /**
     * @param serie the serie to set
     */
    public void setSerie(Serie serie) {
        this.serie = serie;
    }

    /**
     * @return the saison
     */
    public Saison getSaison() {
        return saison;
    }

    /**
     * @param saison the saison to set
     */
    public void setSaison(Saison saison) {
        this.saison = saison;
    }

}
